package com.wenming.weiswift.ui.unlogin.activity; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import com.wenming.weiswift.R; import com.wenming.weiswift.mvp.presenter.WebViewActivityPresent; import com.wenming.weiswift.mvp.presenter.imp.WebViewActivityPresentImp; import com.wenming.weiswift.mvp.view.WebViewActivityView; import com.wenming.weiswift.ui.common.login.Constants; import com.wenming.weiswift.ui.login.activity.MainActivity; /** * Created by wenmingvs on 16/5/12. */ public class WebViewActivity extends Activity implements WebViewActivityView { private Context mContext; private String sRedirectUri; private WebView mWeb; private String mLoginURL; private WebViewActivityPresent mWebViewActivityPresent; private boolean mComeFromAccoutActivity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; setContentView(R.layout.webview_layout); mLoginURL = getIntent().getStringExtra("url"); mComeFromAccoutActivity = getIntent().getBooleanExtra("comeFromAccoutActivity", false); sRedirectUri = Constants.REDIRECT_URL; mWeb = (WebView) findViewById(R.id.webview); mWebViewActivityPresent = new WebViewActivityPresentImp(this); initWebView(); } private void initWebView() { WebSettings settings = mWeb.getSettings(); settings.setJavaScriptEnabled(true); settings.setSaveFormData(false); settings.setSavePassword(false); settings.setCacheMode(WebSettings.LOAD_NO_CACHE); mWeb.setWebViewClient(new MyWebViewClient()); mWeb.loadUrl(mLoginURL); mWeb.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == android.view.KeyEvent.ACTION_DOWN) { if (keyCode == android.view.KeyEvent.KEYCODE_BACK) { if (mWeb.canGoBack()) { mWeb.goBack(); } else { if (!mComeFromAccoutActivity) { Intent intent = new Intent(WebViewActivity.this, UnLoginActivity.class); startActivity(intent); finish(); } else { finish(); } } return true; } } return false; } }); } @Override public void startMainActivity() { Intent intent = new Intent(WebViewActivity.this, MainActivity.class); intent.putExtra("fisrtstart", true); if (mComeFromAccoutActivity) { intent.putExtra("comeFromAccoutActivity", true); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); } startActivity(intent); finish(); } private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (isUrlRedirected(url)) { view.stopLoading(); mWebViewActivityPresent.handleRedirectedUrl(mContext, url); } else { view.loadUrl(url); } return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { if (!url.equals("about:blank") && isUrlRedirected(url)) { view.stopLoading(); mWebViewActivityPresent.handleRedirectedUrl(mContext, url); return; } super.onPageStarted(view, url, favicon); } } public boolean isUrlRedirected(String url) { return url.startsWith(sRedirectUri); } }